Use case: DCACHE maintenance operations in interrupt mode ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
/* Optional: register callbacks */
HAL_DCACHE_RegisterCallback(&hdcache, HAL_DCACHE_CLEAN_BY_ADDRESS_CB_ID,
USER_DCACHE_CleanByAddrCallback);
HAL_DCACHE_RegisterCallback(&hdcache, HAL_DCACHE_INVALIDATE_BY_ADDRESS_CB_ID,
USER_DCACHE_InvalidateByAddrCallback);
HAL_DCACHE_Enable(&hdcache);
__HAL_DCACHE_ENABLE_IT(&hdcache, DCACHE_IT_CMDEND | DCACHE_IT_BSYEND | DCACHE_IT_ERR);
/* Trigger maintenance operations in interrupt mode */
HAL_DCACHE_CleanByAddr_IT(&hdcache, (uint32_t *)buffer, buffer_size);
/* In IRQ handler */
void DCACHE_IRQHandler(void)
{
HAL_DCACHE_IRQHandler(&hdcache);
}
|
/* Optional: register callbacks */
HAL_DCACHE_RegisterCleanByAddrCallback(myDCACHE_CleanByAddrCallback);
HAL_DCACHE_RegisterInvalidateByAddrCallback(myDCACHE_InvalidateByAddrCallback);
/* Start DCACHE with error interrupt enabled */
HAL_DCACHE_Start(&hdcache, HAL_DCACHE_IT_ERROR);
/* Trigger maintenance operations in interrupt mode */
HAL_DCACHE_CleanByAddr_IT(&hdcache, (uint32_t *)buffer, buffer_size);
/* In IRQ handler */
void DCACHE_IRQHandler(void)
{
HAL_DCACHE_IRQHandler(&hdcache);
}
|
Key changes ¶
HAL2 provides dedicated callback registration APIs instead of using callback IDs.
HAL2 uses
HAL_DCACHE_Start()to enable the peripheral and interrupts.The IRQ handler entry point remains
HAL_DCACHE_IRQHandler().

